namespace Microsoft.Robotics.Tracing
{
    using System;

    /// <summary>
    /// Trace formatter interface. Instances of this class will be used by trace writers for formatting trace input
    /// </summary>
    public interface ITraceFormatter
    {
        /// <summary>
        /// Format trace string
        /// </summary>
        /// <param name="dateTime">Date time</param>
        /// <param name="level">Trace level</param>
        /// <param name="context">Trace context</param>
        /// <param name="format">Input string format</param>
        /// <param name="args">The arguments</param>
        /// <returns>Formatted trace string</returns>
        string Format(DateTime dateTime, TraceContext level, TraceContext context, string format, params object[] args);
    }
}
